Pythonを使用してSendGrid Email APIでメールを送信する
こんにちは、チャールです。
このブログ投稿では、主要なメール配信サービスであるSendGridを活用して、Pythonアプリケーションから直接メールを送信する方法を見ていきます。
SendGridのAPIを使用し、メールキャンペーンに柔軟性とコントロールを提供します。
ステップ1: SendGrid APIキーを作成
-
Settings > API Keys に移動し、Create API Key ボタンをクリックしてください。
-
APIキーに名前を付け、Create and View ボタンをクリックしてください。
-
APIキーをコピーして保存してください。一度しか表示されません。
ステップ2: プロジェクトの設定
プロジェクトディレクトリを作成し、app.pyというファイルを作成してください。
ターミナルでプロジェクトディレクトリに移動し、必要なライブラリをインストールするために以下のコマンドを実行してください:
pip install sendgrid python-dotenv
機密のAPIキーを保存するために .env ファイルを作成してください。以下の行を追加し、YOUR_SENDGRID_API_KEY を実際のAPIキーに置き換えてください:
SENDGRID_API_KEY=YOUR_SENDGRID_API_KEY
ステップ3: Senderの設定
送信者、つまり送信元のメールアドレス (FROM_MAIL) を設定するために、Marketing > Senders に移動し、Create New Sender ボタンをクリックしてください、
ステップ4: コード
次のコードを app.py に書いてください。
import sendgrid
import os
from sendgrid.helpers.mail import Mail, Email, To, Content
from dotenv import load_dotenv
load_dotenv()
SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')
sg = sendgrid.SendGridAPIClient(api_key=SENDGRID_API_KEY)
from_email = Email('FROM_MAIL')
to_email = To('TO_MAIL')
subject = "Sending a test email through Sendgrid Email API"
content = Content("text/plain", "It is very easy to implement")
mail = Mail(from_email, to_email, subject, content)
mail_json = mail.get()
response = sg.client.mail.send.post(request_body=mail.get())
print(response.status_code)
コード説明:
- 必要なモジュール (sendgrid、os、sendgrid.helpers.mail のコンポーネント、load_dotenv) をインポートし、APIキーを安全に管理します。
- load_dotenv と os.getenv を使用して、.env ファイルからAPIキーを読み込みます。
- sendgrid.SendGridAPIClient がAPIキーで初期化され、SendGridサービスへの接続が確立されます。
- 送信者(from_email)、受信者(to_email)、件名、およびメールの内容を定義します。Content オブジェクトは、コンテンツタイプがプレーンテキストであることを指定します。
- メール情報をすべてカプセル化するMailオブジェクトが作成されます。
- sg.client.mail.send.post() メソッドを使用して、SendGrid APIを通じてメールを送信します。
- response オブジェクトには、メール送信プロセスに関する情報(ステータスコードやヘッダーなど)が含まれています。
ステップ5: コードの実行
コードをPythonファイルとして保存し、ターミナルから実行して見てください:
python app.py
すべてが正しく設定されていれば、コンソールにステータスコード202が表示され、メールが正常に配信キューに入ったことを示します。まもなくテストメールが受信トレイに届くはずです。
まとめ:
おめでとうございます!SendGridのAPIとPythonを使って、メールの送信に成功しました。SendGridのAPIとPythonの柔軟性を活用することで、メール通信を効率化し、アプリケーションのリーチを拡大できます。
ありがとうございます!